package net.suplementos.dao;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;

import net.suplementos.exception.DAOException;
import net.suplementos.pojo.Despesa;

public class DespesaDAO  extends JPAAbstractDAO<Despesa, Integer> {

	public DespesaDAO(EntityManager manager) throws DAOException {
	    super(manager);
	}
	
	protected Class<Despesa> doGetClass() {
		return Despesa.class;
	}
	
	public List<Despesa> consultar(String nome, String descricao, Date dataInicioPg, Date dataFimPg, 
			Date dataInicioVen, Date dataFimVen) throws DAOException {
       	StringBuilder hql = new StringBuilder("select d from Despesa d where 1 = 1 ");
       	List<Object> parametros = new ArrayList<Object>();

       	if (nome != null && !nome.trim().equals("")) {
       		hql.append("and d.nome like ?");
       		parametros.add("%" + nome + "%");
       	}
       	if (descricao != null && !descricao.trim().equals("")) {
       		hql.append("and d.descricao like ?");
       		parametros.add("%" + descricao + "%");
       	}
       	if (dataInicioPg != null && dataFimPg != null) {
       		hql.append("and p.dataPagamento beetwin ? and ? ");
       		parametros.add(dataInicioPg);
       		parametros.add(dataFimPg);
    	}
       	if (dataInicioVen != null && dataFimVen != null) {
       		hql.append("and p.dataVencimento beetwin ? and ? ");
       		parametros.add(dataInicioVen);
       		parametros.add(dataFimVen);
    	}

    	return consultar(hql.toString(), parametros.toArray(new Object[parametros.size()]));
	}
}
